A remote procedure call (RPC) is a protocol that a program can use to request a service from a program located in another computing device on a shared network without a programmer explicitly coding details for this remote interaction. That is, RPC is an inter-process communication mechanism that enables data exchange and invocation of functionality residing in a different process. With RPC enabled, the programmer writes essentially the same code whether the subroutine is remote or local to the executing program.
RPC is especially well suited for client-server interaction where a requesting program is a client and a service-providing program is a server. The client can initiate an RPC by transmitting a request message to a remote server to execute a function with supplied parameters. In turn, the remote server can transmit a response to the client as a result of the execution of the requested function.
In standard RPC, the functions provided by a standard client run-time library have fixed application programming interfaces that require strict contracts for implementation. Particularly, other than the processing needed to move data to and from a client, a remote server cannot perform additional processing other than the processing resulting from the execution of the requested function. As a result, many existing RPC protocols cannot be integrated into, for example, existing enterprise systems that provide many different or additional functionalities that are not supported by standard RPC protocols.